package Lista1

/*
 * FIXME: Precisa corrigir
 */

object q14 {
  // TODO Precisa corrigir
  // FIXME Precisa Corrigir
  def main(args: Array[String]): Unit = {

    var maior = 0

    println("Digite o primeiro número: ")
    val x = readInt()

    println("Digite o segundo número")
    val y = readInt()

    if (x > y)
      maior = x
    else
      maior = y

    for (i <- 1 to maior) {
      if ((x % i == 0) && (y % i == 0))
        println("os dois numeros sao divisiveis por:" + i)
    }

  }

}

/*
 * Sem usar vars
 */
object q14a extends App {
  println("Digite o primeiro número: ")
  val x = readInt()
  println("Digite o segundo número")
  val y = readInt()
  val div_x = for (i <- 1 to x if x % i == 0) yield i
  val div_y = for (i <- 1 to y if y % i == 0) yield i
  val menor = if (x < y) x else y
  val div_xy = for (i <- 1 to menor if x % i == 0 && y % i == 0) yield i
  printf("Divisores de %d: %s\n", x, div_x.mkString(","))
  printf("Divisores de %d: %s\n", y, div_y.mkString(","))
  printf("Divisores de %d e %d: %s\n", x, y, div_xy.mkString(","))
}

/*
 * Usando filtros
 */
object q14b extends App {
  println("Digite o primeiro número: ")
  val x = readInt()
  println("Digite o segundo número")
  val y = readInt()
  val div_x = 1 to x filter { x % _ == 0 }
  val div_y = 1 to y filter { y % _ == 0 }
  val div_xy = div_x filter { y % _ == 0 }
  printf("Divisores de %d: %s\n", x, div_x.mkString(","))
  printf("Divisores de %d: %s\n", y, div_y.mkString(","))
  printf("Divisores de %d e %d: %s\n", x, y, div_xy.mkString(","))
}